as a ◊ design pattern: decouples: the object the behavior of this object when in a specific state prevents very large classes with a lot of branches